﻿using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Practices.Unity;
using PharmacyBussinesEntities;

namespace PharmacyRepositoy
{
    public class DatabaseInicializer:CreateDatabaseIfNotExists<ContextPharmacy>
    {
        
       protected override void Seed(ContextPharmacy context)
        {
            if (context==null)
            {
                throw new ArgumentException("El context no Existe..!");
                
            }
            else
            {
                GetCategorias().ForEach(p => context.Categorias.Add(p));
                GetLaboratorio().ForEach(p => context.Laboratorios.Add(p));
                GetPresentaciones().ForEach(p => context.Presentaciones.Add(p));
                GetUnidadesMedidas().ForEach(p => context.UnidadMedidas.Add(p));
                //GetProductos().ForEach(p => context.Productos.Add(p));
                GetClientes().ForEach(p => context.Clientes.Add(p));
            }
            
            
        }


        private static List<Laboratorio> GetLaboratorio()
        {
            var lab = new List<Laboratorio>
            {
                new Laboratorio{ Nombre = "CARDEN HOUSE",Descripcion = "PROVEEDOR"},
                new Laboratorio{ Nombre = "pharmawar".ToUpper(),Descripcion = ""}
            };
            return lab;
        }

        private static List<Categoria> GetCategorias()
        {
            var cat = new List<Categoria>
            {
                new Categoria{Nombre = "galenicos".ToUpper(),Descripcion = ""},
                new Categoria{Nombre = "jarabes".ToUpper(),Descripcion = ""}
                
            };
            return cat;
        }

        private static List<Presentacion> GetPresentaciones()
        {
            var prese = new List<Presentacion>
            {
                new Presentacion{Descripcion = "pastillas".ToUpper()},
                new Presentacion{Descripcion = "jarabe".ToUpper()},
                new Presentacion{Descripcion = "efervecente".ToUpper()}
            };
            return prese;
        }

        private static List<UnidadMedida> GetUnidadesMedidas()
        {
            var undMedida = new List<UnidadMedida>
            {
                new UnidadMedida{Nombre = "lt".ToUpper(),Descripcion = "Litro".ToUpper()},
                new UnidadMedida{Nombre = "kg".ToUpper(),Descripcion = "kilogramo".ToUpper()},
                new UnidadMedida{Nombre = "ml".ToUpper(),Descripcion = "mili litro".ToUpper()},
                new UnidadMedida{Nombre = "gr".ToUpper(),Descripcion = "gramo".ToUpper()}
            };
            return undMedida;
        }        

        private static List<Cliente> GetClientes()
        {
            var clie = new List<Cliente>
            {
                new Cliente
                {
                    Nombres = "Liz".ToUpper(),
                    Apellidos = "vigo".ToUpper(),
                    Direccion = "PSJ. ABC S/N",
                    DNI = "704792"
                },
                new Cliente
                {
                    Nombres = "varios".ToUpper(),
                    Apellidos = "varios".ToUpper(),
                    Direccion = "varios",
                    DNI = "12345678"
                }
            };
            return clie;
        }
        private static List<Producto> GetProductos()
        {
            var prod = new List<Producto>
            {
                new Producto
                {
                    Nombre = "aspirina".ToUpper(),
                    Descripcion = "aspirina",
                    PrincipioActivo = "aspirina".ToUpper(),
                    NumeroUnidadMedida = 1,
                    Stock = 20,
                    StockMaximo = 150,
                    StockMinimo = 10,
                    Categoria = new Categoria
                    {
                        Id = 1
                    },
                    Laboratorio = new Laboratorio
                    {
                        Id = 2
                    },
                    UnidadMedida = new UnidadMedida
                    {
                        Id = 2
                    },
                    Presentacion = new Presentacion
                    {
                        Id = 2
                    }
                    
                    
                    
                },
                new Producto
                {
                    Nombre = "apronax".ToUpper(),
                    Descripcion = "apronax",
                    PrincipioActivo = "apronax".ToUpper(),
                    NumeroUnidadMedida = 1,
                    Stock = 20,
                    StockMaximo = 150,
                    StockMinimo = 10,
                    Categoria = new Categoria
                    {
                        Id = 1
                    },
                    Laboratorio = new Laboratorio
                    {
                        Id = 2
                    },
                    UnidadMedida = new UnidadMedida
                    {
                        Id = 2
                    },
                    Presentacion = new Presentacion
                    {
                        Id = 2
                    }
                    
                    
                    
                },
            };
            return prod;
        }
    }
}
